﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Control;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using LPV_POS.Module;
using DevExpress.XtraGrid.Views.Base;

namespace LPV_POS.mh_pos
{
    public partial class mh_banhang_nguoigioithieu : DevExpress.XtraEditors.XtraForm
    {
        #region 1.Biến toàn cục

        thuvien tv;
        DataTable tb;
        string[] s;
        object[] o;
        DABH_PHIEU_NGUOI_GIOI_THIEU DA;
        DOBH_PHIEU_NGUOI_GIOI_THIEU T;
        private bool FlagSua = false;//true:sua ; false :them moi
        private DataRow dr;
        #endregion

        public mh_banhang_nguoigioithieu(DataRow Row)
        {
            dr = Row;
            DA = new DABH_PHIEU_NGUOI_GIOI_THIEU();
            InitializeComponent();
            EventButton();
            InitControl();
            InitGrid();
            LoadDataGrid(CboNhomKhachHang._GetselectedID());
            if (dr != null)
            {
                if (dr["OBJID"].ToString() + "" != "")
                {
                    SetData(dr["OBJID"].ToString());
                }
                else
                {
                    SetData("-1");
                }
            }
            
        }

        #region 2.Khởi tạo GridControl

        private void InitGrid()
        {
            Col_MaKH.FieldName = "THEKHACHHANG";
            Col_tenkhachhang.FieldName = "OBJNAME";
            Col_DienThoai.FieldName = "DIENTHOAIDD";
        }

        private void LoadDataGrid(string NhomKH)
        {
            DataSet ds = tv.sql_SelectDataset("DM_KHACHHANG", "MANHOMKHACHHANG", NhomKH);
            try
            {
                GridControl_Data.DataSource = ds.Tables[0];
            }
            catch (Exception)
            {
            }
        }

        #endregion

        #region 3.Khởi tạo Control

        private void InitControl()
        {
            f_showdataoncombox(CboNhomKhachHang, f_selectdsNhanVienchuforcom(), "OBJID", "OBJNAME");
            CboNhomKhachHang._SetselectedID("-1");
            CboNhomKhachHang.SelectedIndexChanged += new EventHandler(CboNhomKhachHang_SelectedIndexChanged);
            GridView_Data.DoubleClick += new EventHandler(GridView_Data_DoubleClick);
            //DATA
            if (dr != null)
            {
                txtSoPhieu.Text = dr["OBJID"].ToString();
                Tong_Tien.Value = Convert.ToDecimal(dr["TONG_TIEN"]);
                NGAY_LAP.DateTime = DateTime.Now;
            }
        }

        void GridView_Data_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                DataRow dr1 = GridView_Data.GetDataRow(GridView_Data.FocusedRowHandle);
                if (dr1 != null)
                {
                    if (dr1["OBJID"].ToString() + "" != "")
                    {
                        txtNguoiGioiThieu.Text = dr1["OBJNAME"].ToString();
                        T.NGUOI_GIOI_THIEU_MA = dr1["OBJID"].ToString();
                    }
                }
            }
            catch (Exception)
            {
            }
        }

        void CboNhomKhachHang_SelectedIndexChanged(object sender, EventArgs e)
        {
            LoadDataGrid(CboNhomKhachHang._GetselectedID());
        }

        // hien thi ds nhom chu len combobox
        private void f_showdataoncombox(AXCombobox cb, DataTable tb, string value, string display)
        {
            cb.Datasource = tb;
            cb.DisplayField = display;
            cb.ValueFiled = value;
            cb._Init();
        }

        #endregion

        #region 4.Xử lý Nút

        private void EventButton()
        {
            btnThem.Click += new EventHandler(btnThem_Click);
            BtnXoa.Click += new EventHandler(BtnXoa_Click);
            BtnSua.Click += new EventHandler(BtnSua_Click);
            BtnLuu.Click += new EventHandler(BtnLuu_Click);
            BtnThoat.Click += new EventHandler(BtnThoat_Click);
        }

        void BtnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        void BtnLuu_Click(object sender, EventArgs e)
        {
            if (FlagSua == true)//truong hop sua data
            {
                if (GetData() == true)
                {
                    if (DA.Update_DanhMuc(T) == 1)
                    {
                        //Successful
                        MessageBox_LPV.Show("Lưu dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        FlagSua = false;
                        LoadDataGrid(CboNhomKhachHang._GetselectedID());
                    }
                    else
                    {
                        //UnSuccessful
                        MessageBox_LPV.Show("Lưu dữ liệu không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else //truong hop them moi
            {
                if (GetData() == true)
                {
                    if (DA.Insert_DanhMuc(T) == 1)
                    {
                        //Successful
                        MessageBox_LPV.Show("Lưu dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        LoadDataGrid(CboNhomKhachHang._GetselectedID());
                    }
                    else
                    {
                        //UnSuccessful
                        MessageBox_LPV.Show("Lưu dữ liệu không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }

        void BtnSua_Click(object sender, EventArgs e)
        {
            //DataRow row=GridView_Data.GetDataRow(GridView_Data.FocusedRowHandle);
            //if(row!=null)
            //{
            //    if (row["OBJID"].ToString() + "" != "")
            //        T.OBJID = Convert.ToInt32(row["OBJID"]);
            //    else
            //        return;
            //}
            //FlagSua = true;
        }

        void BtnXoa_Click(object sender, EventArgs e)
        {
            if (MessageBox_LPV.Show("Bạn muốn xóa dữ liệu này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.OK)
            { 
                //Xoa Data
                if (txtSoPhieu.Text + "" != "")
                {
                    if (DA.Delete_DanhMuc(txtSoPhieu.Text) >= 0)
                    {
                        MessageBox_LPV.Show("Xóa dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    else
                    {
                        MessageBox_LPV.Show("Xóa dữ liệu không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }

        void btnThem_Click(object sender, EventArgs e)
        {
            NGAY_LAP.DateTime = DateTime.Now;
            Tong_Tien.Value = 0;
        }

        #endregion

        #region 5.Xử lý Sự kiện

        #endregion

        #region 6.Khởi tạo dữ liệu để xử lý

        private void SetData(string IDkey)
        {
            T = DA.SetData_KhoHang(IDkey);
            txtNguoiGioiThieu.Text = T.NGUOI_GIOI_THIEU_TEN;
            //txtSoPhieu.Text = T.BH_PHIEU_MA;
            NGAY_LAP.DateTime = T.NGAY_NHAP;
            //Tong_Tien.Value = Convert.ToDecimal(T.TONG_TIEN);
        }

        private bool GetData()
        {
            //1.Kiểm tra dữ liệu nhập
            if (txtSoPhieu.Text == "")
            {
                MessageBox_LPV.Show("Phiếu bán hàng không tồn tại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (txtNguoiGioiThieu.Text == "")
            {
                MessageBox_LPV.Show("Mời chọn người giới thiệu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            //
            //2.Gán dữ liệu vào DO
            //T.OBJID = 0;
            T.BH_PHIEU_MA = txtSoPhieu.Text;
            //T.NGUOI_GIOI_THIEU_MA = CboNhanVien._GetselectedID();
            T.NGUOI_GIOI_THIEU_TEN = txtNguoiGioiThieu.Text;
            T.NGAY_NHAP = DateTime.Now;
            T.THANH_TIEN = Convert.ToSingle(dr["THANH_TIEN"]);
            T.TONG_TIEN = Convert.ToSingle(dr["TONG_TIEN"]);
            //
            return true;
        }

        #endregion

        #region 7.Xử lý Database

        // select danh sach don vi tinh
        private DataTable f_selectdsNhanVienchuforcom()
        {
            tv = new thuvien();
            tb = tv.sql_SelectDataset("DM_NHOMKHACHHANG").Tables[0];
            DataView dv_temp = tb.DefaultView;
            dv_temp.Sort = "OBJID DESC";
            DataRow myNewRow;
            myNewRow = tb.NewRow();
            myNewRow["OBJID"] = "-1";
            myNewRow["OBJNAME"] = "--- Chọn nhóm khách hàng ---";
            tb.Rows.Add(myNewRow);
            //  tb.Rows.Add(n);
            tb.Columns.Add("STT", typeof(int));
            for (int i = 0; i < tb.Rows.Count; i++)
                tb.Rows[i]["STT"] = i + 1;

            //DataView dv_temp1 = tb.DefaultView;
            dv_temp.Sort = "STT DESC";
            return dv_temp.ToTable();
        }

        #endregion

    }

    public class DOBH_PHIEU_NGUOI_GIOI_THIEU
    {
        public string BH_PHIEU_MA;
        public string NGUOI_GIOI_THIEU_MA;
        public string NGUOI_GIOI_THIEU_TEN;
        public DateTime NGAY_NHAP;
        public float THANH_TIEN;
        public float TONG_TIEN;
        public DOBH_PHIEU_NGUOI_GIOI_THIEU() { }
    }

    public class DABH_PHIEU_NGUOI_GIOI_THIEU
    {
        thuvien tv;
        public DABH_PHIEU_NGUOI_GIOI_THIEU()
        {
            tv = new thuvien();
        }

        public int Insert_DanhMuc(DOBH_PHIEU_NGUOI_GIOI_THIEU T)
        {
            return Execute_Query(T, 1);
        }

        public int Update_DanhMuc(DOBH_PHIEU_NGUOI_GIOI_THIEU T)
        {
            return Execute_Query(T, 2);
        }

        public int Delete_DanhMuc(string IDKey)
        {
            string sql = "delete from BH_PHIEU_NGUOI_GIOI_THIEU where BH_PHIEU_MA='" + IDKey+"'";
            return tv.SP_Update("SP_EXECUTESQL", new string[] { "@sSQL" }, new object[] { sql });
            //return tv.ExcuteQuery(sql);
        }

        #region 1.Thực thi store procedure

        /// <summary>
        /// Thực thi câu store
        /// </summary>
        /// <param name="T">Đối tượng Kho</param>
        /// <param name="choice">1:Thêm mới ; 2:Cập nhật</param>
        /// <returns></returns>
        public int Execute_Query(DOBH_PHIEU_NGUOI_GIOI_THIEU T, int choice)
        {
            string[] s;
            object[] o;
            s = new string[] { "@flag", "@BH_PHIEU_MA", "@NGUOI_GIOI_THIEU_MA", "@NGUOI_GIOI_THIEU_TEN", "@NGAY_NHAP", "@THANH_TIEN", "@TONG_TIEN" };
            o = new object[] { choice, T.BH_PHIEU_MA, T.NGUOI_GIOI_THIEU_MA, T.NGUOI_GIOI_THIEU_TEN, T.NGAY_NHAP, T.THANH_TIEN, T.TONG_TIEN};
            int ketqua = tv.SP_Update("sp_BH_PHIEU_NGUOI_GIOI_THIEU", s, o);
            return ketqua;
        }

        #endregion

        #region 2.Set + Get Data

        public DOBH_PHIEU_NGUOI_GIOI_THIEU SetData_KhoHang(string IDKey)
        {
            DOBH_PHIEU_NGUOI_GIOI_THIEU T = new DOBH_PHIEU_NGUOI_GIOI_THIEU();
            DataSet ds = tv.sql_SelectDataset("BH_PHIEU_NGUOI_GIOI_THIEU", "BH_PHIEU_MA", IDKey);
            if (ds != null)
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    T.BH_PHIEU_MA = dr[0].ToString();
                    T.NGUOI_GIOI_THIEU_MA = dr[1].ToString();
                    T.NGUOI_GIOI_THIEU_TEN = dr[2].ToString();
                    if (dr[3].ToString() == "")
                        T.NGAY_NHAP = Convert.ToDateTime("01/01/1800");
                    else
                        T.NGAY_NHAP = Convert.ToDateTime(dr[3]);
                    T.THANH_TIEN = Convert.ToSingle(dr[4]);
                    T.TONG_TIEN = Convert.ToSingle(dr[5]);
                    //
                }
            }
            return T;
        }

        public DataSet GetData_KhoHang
           (
           string ID_PHB
           )
        {
            string[] s;
            object[] o;
            s = new string[] { "@flag", "@BH_PHIEU_MA", "@NGUOI_GIOI_THIEU_MA", "@NGUOI_GIOI_THIEU_TEN", "@NGAY_NHAP", "@THANH_TIEN", "@TONG_TIEN" };
            o = new object[] { 4, ID_PHB ,"","",DateTime.Now,0,0};
            return tv.SP_SelectDataset("sp_DM_NHANVIEN_PHUCVU", s, o);
        }

        #endregion

    }

}